﻿using System;
using System.Collections.Generic;

namespace InvoiceInvoker.Logic.RepositoryInterfaces
{
	public interface IInvoiceRepository : IRepository<Invoice>
	{
		List<Invoice> GetAll();

		List<Invoice> GetByStatus(Invoice.InvoiceStatus status);

		List<Invoice> GetByDate(DateTime dateFrom, DateTime dateTo);

		List<Invoice> GetByCustomer(string companyName);

		List<Invoice> GetByProduct(string productName);

		List<Invoice> GetByValue(decimal valueFrom, decimal valueTo);

		List<Invoice> GetByExpression(Func<Invoice, bool> expression);
	}
}
